package net.sudot.chess.config;

import com.jagregory.shiro.freemarker.ShiroTags;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfig;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * 在没有JSP环境下的freemarker中使用shiro鉴权功能
 * <pre>
 *     spring boot使用的嵌入式servlet容器默认不支持jsp解析及相关功能
 *     也不支持在freemarker中直接引入shiro的jstltag([#assign shiro=JspTaglibs["http://shiro.apache.org/tags"]])来直接使用
 *     因此需要扩展freemarker的指令,在模版中通过指令来实现
 * </pre>
 *
 * @author tangjialin on 2018-09-03.
 */
@Configuration
public class ShiroTagsFreeMarkerConfiguration {

    @Resource
    private FreeMarkerConfig freeMarkerConfig;

    @PostConstruct
    public void afterPropertiesSet() {
        // 在freemarker使用shiro配置
        freeMarkerConfig.getConfiguration().setSharedVariable("shiro", new ShiroTags());
    }
}